package com.liveneo.stoat.cms.web;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.fileupload.FileItemIterator;
import org.apache.commons.fileupload.FileItemStream;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.io.FileUtils;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;

import com.liveneo.stoat.common.page.PageParam;
import com.liveneo.stoat.common.web.BaseController;

/**
 * 
 *@Description: 图片管理
 *@Author:hjt 
 *@Since:2017年2月15日 下午4:02:00 
 *@Version:1.0.0
 */
@Controller
@RequestMapping ("/cms/picture")
public class PictureController extends BaseController{
	private static String BASE_PATH = "cms/picture";

	/**  用户列表   */
	@RequestMapping (value = "/list")
	public String list( ModelMap modelMap, PageParam pageParam){
		logger.info("PictureController.list start");
		try {
			
		} catch (Exception e) {
			logger.info("PictureController.list error>>>"+e.getMessage());
		}
		logger.info("PictureController.list end");
		return BASE_PATH + "/pictureList";
	}
	
	/**  用户列表   */
	@RequestMapping (value = "/fileupload")
	public void fileupload(@RequestParam MultipartFile[] myfiles,HttpServletRequest request){
		logger.info("PictureController.list start");
		
		
		 //如果只是上传一个文件，则只需要MultipartFile类型接收文件即可，而且无需显式指定@RequestParam注解 
        //如果想上传多个文件，那么这里就要用MultipartFile[]类型来接收文件，并且还要指定@RequestParam注解 
        //并且上传多个文件时，前台表单中的所有<input type="file"/>的name都应该是myfiles，否则参数里的myfiles无法获取到所有上传的文件 
        for(MultipartFile myfile : myfiles){ 
            if(myfile.isEmpty()){ 
                System.out.println("文件未上传"); 
            }else{ 
                System.out.println("文件长度: " + myfile.getSize()); 
                System.out.println("文件类型: " + myfile.getContentType()); 
                System.out.println("文件名称: " + myfile.getName()); 
                System.out.println("文件原名: " + myfile.getOriginalFilename()); 
                System.out.println("========================================"); 
                //如果用的是Tomcat服务器，则文件会上传到\\%TOMCAT_HOME%\\webapps\\YourWebProject\\WEB-INF\\upload\\文件夹中 
                String realPath = request.getSession().getServletContext().getRealPath("/WEB-INF/upload"); 
                //这里不必处理IO流关闭的问题，因为FileUtils.copyInputStreamToFile()方法内部会自动把用到的IO流关掉，我是看它的源码才知道的 
                
//                String path = System.getProperty("user.dir") + File.separator + "src" + File.separator + "main" + File.separator + "webapp" + File.separator + "upload";
                
                try {
					FileUtils.copyInputStreamToFile(myfile.getInputStream(), new File(realPath, myfile.getOriginalFilename()));
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} 
            } 
        } 
        
        
//		 boolean flag = false;
//	        
//        //判断是否是文件上传请求
//        if(ServletFileUpload.isMultipartContent(request)){
//            // 创建文件上传处理器
//            ServletFileUpload upload = new ServletFileUpload();
//            //限制单个上传文件的大小
//            upload.setFileSizeMax(1L<<24);
//            
//            try {
//                // 解析请求
//                FileItemIterator iter = upload.getItemIterator(request);
//                
//                while (iter.hasNext()) {
//                    FileItemStream item = iter.next();
//                    
//                    if (!item.isFormField()) {
//                        //是文件上传对象，获取上传文件的输入流
//                        InputStream srcin = item.openStream();
//                        /*对上传文件的输入流进行处理，跟本地的文件流处理方式相同*/
//                        
//                        FileUtils.copyInputStreamToFile(srcin, new File(realPath, item.getOriginalFilename())); 
//                        
//                    }
//                }
//            } catch (FileUploadException e) {
//                System.out.println("上传文件过大");
//            } catch (IOException e) {
//                System.out.println("文件读取出现问题");
//            }
//        }
		logger.info("PictureController.list end");
	}
	
	
}
